package com.dragon.modules.yuegou.service.order;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.common.web.PageRequest;
import com.dragon.modules.yuegou.entity.order.GoodsEntity;
import com.dragon.modules.yuegou.model.order.CashCouponDataDetail;
import com.dragon.modules.yuegou.model.order.CouponDataDetail;
import com.dragon.modules.yuegou.model.order.Goods;
import com.dragon.modules.yuegou.model.system.Document;
import com.dragon.modules.yuegou.query.order.PickupQuery;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 单品 服务接口
 *
 * @author pbuilder generated
 * @date 2019-04-03 13:57:50
 * @version 2.0
 */
public interface GoodsService extends IService<GoodsEntity> {

	/**
	 * 查询订单单品列表
	 * 
	 * @param orderNo 订单号
	 * @return 单品列表
	 */
	List<Goods> listByOrder(String orderNo);


	boolean goodsVerify(String merchantId,String goodsId);

	/**
	 * 查询商品核销记录分页列表
	 */
	IPage<Goods> searchPickup(PageRequest page, PickupQuery query);

	/**
	 * 导出商品核销记录
	 */
	Document exportPickup(PickupQuery query);

	/**
	 * 统计商户今天的收入
	 * @param merchantId
	 * @return
	 */
	BigDecimal totalTodayIncome(String merchantId);

	/**
	 * 统计商户今天的核销商品数
	 * @param merchantId
	 * @return
	 */
	Integer totalodayAfterNum(String merchantId);

	/**
	 * 单品列表分页查询
	 * @param merchantId
	 * @param term
	 * @param pickup
	 * */
	IPage<Goods> goodsList(PageRequest page, String merchantId, String term, Boolean pickup,LocalDateTime startTime,LocalDateTime endTime);

	/**
	 * 会员单品列表分页查询
	 * */
	IPage<Goods> statusGoodsList(PageRequest page, String memberId, String busdId, Boolean pickup, Boolean expired);

	/**
	 * 单品详细信息
	 * */
	Goods goodsDetails(String goodsId);

	/**
	 * 用户常逛的商户
	 * @param memberId
	 * @return
	 */
	List<Goods> listForMyOften(String memberId);

	/**
	 * 查询单品信息详情
	 * 
	 * */
	Goods toShopDetails(String goodsId);
	
	/**
	 * @param page 分页信息
	 * @param query 请求条件
	 * @return
	 */
	IPage<CouponDataDetail> dataDetail(PageRequest page, CashCouponDataDetail query);

	/**
	 * @param query 查询条件
	 * @return
	 */
	Document exportData(CashCouponDataDetail query);

	/***
	 * 查询出三天到四天内即将过期的订单
	 */
	List<Goods> getOverdueOrderInfos();

	/**
	 * 未使用商品
	 * @param busdId
	 * @param memberId
	 * @return
	 */
    Integer noUseNum(String busdId, String memberId);

	/**
	 * 订单单品列表
	 * @param page
	 * @param memberId
	 * @param busdId
	 * @param orderStatus
	 * @param orderType
	 * @return
	 */
    IPage<Goods> orderGoodsList(PageRequest page, String memberId, String busdId, Integer orderStatus, Integer orderType);
}